
import java.util.Arrays;
import java.util.Random;

/**
 * @author sjp
 * @date 2021/3/11 0:45
 * @description 双色球数字生成
 */
public class TwoColorBall {

    public static void main(String[] args) {

        //创建返回值数组 7位=6个红球号码+1个蓝球号码
        int[] resultArr = new int[7];

        //创建随机数对象
        Random randomNum = new Random();

        //红球需要6个数字,循环6次
        for (int i = 0; i < 6; i++) {

            //需要判断红球数字不能重复，所以需要无限循环，直到不重复才可以跳出当前循环
            while (true) {
                //nextInt的范围是0~入参-1，所以1~33 需要入参为33，最后再+1
                //添加到返回值数组中,数组索引0-5表示6个红球数字
                int redBallNum = randomNum.nextInt(33) + 1;

                //判断生成的红球数字是否已经出现过，出现过的话需要重新生成
                //创建 用来判断是否重复的变量isRepeat
                boolean isRepeat;

//                //方法一：使用循环遍历数组
//                //循环变量j表示数组索引0-5的6个数字，循环遍历判断重复
//                for (int j = 0; j < 6; j++) {
//                    //判断相同退出当前循环,进行下个数字的判断
//                    if (resultArrays[j] == redBallNum) {
//                        isRepeat = true;
//                        break;
//                    }
//                }

                //方法二：通过String对象的 contains方法来判断是否出现过（需要使用到Arrays工具类）
                //首先将数组转换为String类型的值
                String resultArrStr = Arrays.toString(resultArr);
                //然后使用String的contains判断是否出现过
                isRepeat = resultArrStr.contains(String.valueOf(redBallNum));

                //当没有重复时，将生成的数字添加到数组中,并退出当前无限循环
                if (!isRepeat) {
                    resultArr[i] = redBallNum;
                    break;
                }
            }
        }

        //生成蓝球的数字放入数组的最后一位
        //入参为16，最后再+1即为1~16
        resultArr[6] = randomNum.nextInt(16) + 1;

        //输出生成的结果数组，使用Arrays工具类
        System.out.println("双色球的号码为：" + Arrays.toString(resultArr));
    }
}
